
const rangeOptions = {
  shortcuts: [{
    text: '最近一周',
    onClick(picker) {
      const end = new Date();
      const start = new Date();
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
      picker.$emit('pick', [start, end]);
    }
  }, {
    text: '最近一个月',
    onClick(picker) {
      const end = new Date();
      const start = new Date();
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
      picker.$emit('pick', [start, end]);
    }
  }, {
    text: '最近三个月',
    onClick(picker) {
      const end = new Date();
      const start = new Date();
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
      picker.$emit('pick', [start, end]);
    }
  }]
}

const pickerOptions = {
    // disabledDate(time) {
    //   return time.getTime() > Date.now();
    // },
    shortcuts: [{
      text: '今天',
      onClick(picker) {
        picker.$emit('pick', new Date());
      }
    }, {
      text: '昨天',
      onClick(picker) {
        const date = new Date();
        date.setTime(date.getTime() - 3600 * 1000 * 24);
        picker.$emit('pick', date);
      }
    }, {
      text: '一周前',
      onClick(picker) {
        const date = new Date();
        date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
        picker.$emit('pick', date);
      }
    },  {
      text: '1个月前',
      onClick(picker) {
        const date = new Date();
        date.setTime(date.getTime() - 3600 * 1000 * 24 * 30);
        picker.$emit('pick', date);
      }
    }, {
      text: '3个月前',
      onClick(picker) {
        const date = new Date();
        date.setTime(date.getTime() + 3600 * 1000 * 24 * 90);
        picker.$emit('pick', date);
      }
    }, 
    {
        text: '半年前',
        onClick(picker) {
          const date = new Date();
          date.setTime(date.getTime() + 3600 * 1000 * 24 * 180);
          picker.$emit('pick', date);
        }
      },
    
    {
      text: '一年前',
      onClick(picker) {
        const date = new Date();
        date.setTime(date.getTime() - 3600 * 1000 * 24 * 365);
        picker.$emit('pick', date);
      }
    }]
  };

const pageOptions = [10, 20, 50, 100, 500] 

const checkIdNumberValid=(tex)=>{
  var tip = '输入的身份证号有误！';
  var num = tex;
  num = num.toUpperCase();
  var len, re;
  len = num.length;
  if(len == 0) return true;

  //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。
  if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))){
      return false;
  }

  //验证前两位地区是否有效
  var aCity= {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",
      32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",
      44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",
      62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}

  if(aCity[parseInt(num.substr(0,2))] == null){
      return false;
  }

  //当身份证为15位时的验证出生日期。
  if (len == 15){
      re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
      var arrSplit = num.match(re);

      //检查生日日期是否正确
      var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
      var bGoodDay;
      bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
      if (!bGoodDay){
          return false;
      }
  }

  //当身份证号为18位时，校验出生日期和校验位。
  if (len == 18){
      re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
      var arrSplit = num.match(re);
      //检查生日日期是否正确
      var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
      var bGoodDay;
      bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
      if (!bGoodDay){
          return false;
      }
      else{
          //检验18位身份证的校验码是否正确。
          //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
          var valnum;
          var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
          var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
          var nTemp = 0, i;
          for(i = 0; i < 17; i ++){
              nTemp += num.substr(i, 1) * arrInt[i];
          }
          valnum = arrCh[nTemp % 11];
          if (valnum != num.substr(17, 1)){
              return false;
          }
      }
  }
  return true;
}

const validlegalbizLicNum= (value) => {

  if (!value){
    return false;
  }

  if (value.length != 18){
    return false;
  }

  let Ancode;//统一社会信用代码的每一个值
  let Ancodevalue;//统一社会信用代码每一个值的权重
  let total = 0;
  let weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];//加权因子
  //不用I、O、S、V、Z
  let str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
  for (let i = 0; i < value.length - 1; i++) {
      Ancode = value.substring(i, i + 1);
      Ancodevalue = str.indexOf(Ancode);
      total = total + Ancodevalue * weightedfactors[i];
      //权重与加权因子相乘之和
  }
  let logiccheckcode = 31 - total % 31;
  if (logiccheckcode == 31) {
      logiccheckcode = 0;
  }
  let Str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y";
  let Array_Str = Str.split(',');
  logiccheckcode = Array_Str[logiccheckcode];

  let checkcode = value.substring(17, 18);
  if (logiccheckcode != checkcode) {
      return false;
  }
  return true;
}

const  export2Excel= (value, obj, filename) => {
  let xlsxParam = { raw: true };
  let tables = document.getElementById(value);
  // let fix = document.querySelector('.el-table__fixed');
  // if(fix){ 
  //   tables = document.getElementById(value).removeChild(fix);
  //   document.getElementById(value).appendChild(fix);
  // }else{
  //   tables = document.getElementById(value);
  // }

 
  let table_book = obj.$XLSX.utils.table_to_book(tables, xlsxParam);
  var table_write = obj.$XLSX.write(table_book, {
    bookType: "xlsx",
    bookSST: true,
    type: "array"
  });
  try {
    obj.$FileSaver.saveAs(
      new Blob([table_write], { type: "application/octet-stream" }),
      filename
    );
  } catch (e) {
    if (typeof console !== "undefined") console.log(e, table_write);
  }
  return table_write;
}


export default {
    pickerOptions,
    rangeOptions,
    pageOptions,
    checkIdNumberValid,
    validlegalbizLicNum,
    export2Excel
}